home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 001-100 / 001-025 / 003 / xlisp / xlinit.c < prev    next >
C/C++ Source or Header  |  1995-03-17  |  3KB  |  105 lines

  1. /* xlinit.c - xlisp initialization module */
  2.  
  3. #include "xlisp.h"
  4.  
  5. /* external variables */
  6. extern NODE *true;
  7. extern NODE *s_quote,*s_function,*s_bquote,*s_comma,*s_comat;
  8. extern NODE *s_lambda,*s_macro;
  9. extern NODE *s_stdin,*s_stdout;
  10. extern NODE *s_evalhook,*s_applyhook;
  11. extern NODE *s_tracenable,*s_tlimit,*s_breakenable;
  12. extern NODE *s_continue,*s_quit;
  13. extern NODE *s_car,*s_cdr,*s_get,*s_svalue,*s_splist,*s_eql;
  14. extern NODE *k_test,*k_tnot,*k_optional,*k_rest,*k_aux;
  15. extern NODE *a_subr,*a_fsubr;
  16. extern NODE *a_list,*a_sym,*a_int,*a_str,*a_obj,*a_fptr;
  17. extern struct fdef ftab[];
  18.  
  19. /* xlinit - xlisp initialization routine */
  20. xlinit()
  21. {
  22.     struct fdef *fptr;
  23.     NODE *sym;
  24.  
  25.     /* initialize xlisp (must be in this order) */
  26.     xlminit();    /* initialize xldmem.c */
  27.     xlsinit();    /* initialize xlsym.c */
  28.     xldinit();    /* initialize xldbug.c */
  29.     xloinit();    /* initialize xlobj.c */
  30.  
  31.     /* enter the builtin functions */
  32.     for (fptr = ftab; fptr->f_name; fptr++)
  33.     xlsubr(fptr->f_name,fptr->f_type,fptr->f_fcn);
  34.  
  35.     /* enter the 't' symbol */
  36.     true = xlsenter("t");
  37.     true->n_symvalue = true;
  38.  
  39.     /* enter some important symbols */
  40.     s_quote    = xlsenter("quote");
  41.     s_function    = xlsenter("function");
  42.     s_bquote    = xlsenter("backquote");
  43.     s_comma    = xlsenter("comma");
  44.     s_comat    = xlsenter("comma-at");
  45.     s_lambda    = xlsenter("lambda");
  46.     s_macro    = xlsenter("macro");
  47.     s_eql    = xlsenter("eql");
  48.     s_continue    = xlsenter("continue");
  49.     s_quit    = xlsenter("quit");
  50.  
  51.     /* enter setf place specifiers */
  52.     s_car    = xlsenter("car");
  53.     s_cdr    = xlsenter("cdr");
  54.     s_get    = xlsenter("get");
  55.     s_svalue    = xlsenter("symbol-value");
  56.     s_splist    = xlsenter("symbol-plist");
  57.  
  58.     /* enter parameter list keywords */
  59.     k_test    = xlsenter(":test");
  60.     k_tnot    = xlsenter(":test-not");
  61.  
  62.     /* enter lambda list keywords */
  63.     k_optional    = xlsenter("&optional");
  64.     k_rest    = xlsenter("&rest");
  65.     k_aux    = xlsenter("&aux");
  66.  
  67.     /* enter *standard-input* and *standard-output* */
  68.     s_stdin = xlsenter("*standard-input*");
  69.     s_stdin->n_symvalue = newnode(FPTR);
  70.     s_stdin->n_symvalue->n_fp = stdin;
  71.     s_stdin->n_symvalue->n_savech = 0;
  72.     s_stdout = xlsenter("*standard-output*");
  73.     s_stdout->n_symvalue = newnode(FPTR);
  74.     s_stdout->n_symvalue->n_fp = stdout;
  75.     s_stdout->n_symvalue->n_savech = 0;
  76.  
  77.     /* enter the eval and apply hook variables */
  78.     s_evalhook = xlsenter("*evalhook*");
  79.     s_evalhook->n_symvalue = NIL;
  80.     s_applyhook = xlsenter("*applyhook*");
  81.     s_applyhook->n_symvalue = NIL;
  82.  
  83.     /* enter the error traceback and the error break enable flags */
  84.     s_tracenable = xlsenter("*tracenable*");
  85.     s_tracenable->n_symvalue = NIL;
  86.     s_tlimit = xlsenter("*tracelimit*");
  87.     s_tlimit->n_symvalue = NIL;
  88.     s_breakenable = xlsenter("*breakenable*");
  89.     s_breakenable->n_symvalue = true;
  90.  
  91.     /* enter a copyright notice into the oblist */
  92.     sym = xlsenter("**Copyright-1985-by-David-Betz**");
  93.     sym->n_symvalue = true;
  94.  
  95.     /* enter type names */
  96.     a_subr    = xlsenter("SUBR");
  97.     a_fsubr    = xlsenter("FSUBR");
  98.     a_list    = xlsenter("LIST");
  99.     a_sym    = xlsenter("SYM");
  100.     a_int    = xlsenter("INT");
  101.     a_str    = xlsenter("STR");
  102.     a_obj    = xlsenter("OBJ");
  103.     a_fptr    = xlsenter("FPTR");
  104. }
  105.